//获取j问题中的解码功能
const {
    jwtDecode
} = require("../utils/jwt")

const adminModel = require("../db/model/adminModel")

//校验中间件
module.exports = async (req, res, next) => {
    const {
        token
    } = req.headers

    //对token进行解码( 返回{ code: 1, adminName})
    const jwtResult = jwtDecode(token, "666")

    //判断解码情况,code是0时表示解码失败
    if (jwtResult.code === 0) {
        return res.send({
            code: 20000,
            msg: "服务端权限校验解码失败",
            data: null
        })
    }

    try {
        //如果解码成功,需要查询登录状态,返回啥?
        const findResult = await adminModel.findOne({
            adminName: jwtResult.adminName
        })
        //未登录状态
        if (findResult.status === 0) {
            return res.send({
                code: 20000,
                msg: '服务端权限校验失败,数据库保存的status异常',
                data: null
            })
        }

        //已登录,继续向下执行
        next()
    } catch (e) {
        console.log("权限控制中:查询status状态出现异常" + e.message);
        res.send({
          code: 20000,
          msg: "权限控制中:查询status状态出现异常" + e.message,
          data: null
        })
    }
}